package com.forchange.project.util

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Author chencong
 * @Description 将环境共享为公共数据(创建环境)
 * @Date 1:23 下午 2021/6/27
 * @Param
 * */
object EnvUtil {
  //创建一个共享数据
  private val scLocal = new ThreadLocal[SparkContext]

  //获取环境对象
  def getEnv() = {
    //从当前线程的共享空间中获取环境变量
    var sc: SparkContext = scLocal.get()

    if (sc == null) {
      val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkProject")
      sc = new SparkContext(sparkConf)
      //将共享数据放入共享空间
      scLocal.set(sc)
    }
    sc
  }

  //清楚对象
  def clear(): Unit = {
    getEnv().stop()

    //将共享内存的数据清楚
    scLocal.remove()
  }


}
